﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient; // hay que agregar esto pa la conexion a sql
using System.Data;
using System.Configuration;

namespace POSSchemas
{
    public class bdsql  //esta clase es pal manejo de la bd
    {
        //se podra abrir, cerrar, cunsultar, ejecutar sentencias de sql, etc
        //variables privadas
        private string cadenaConexion;
        private SqlConnection cnx;

        //constructores
        public bdsql(string cadenacnx)
        {
            this.cadenaConexion = cadenacnx;
        }

        public bdsql()
        {
            // esto es para que puedas pones la cadena de conexion que quieras 

        }

        //metodos publicos
        public void bdConecta()
        {
            try
            {
                cnx = new SqlConnection(cadenaConexion);
                cnx.Open();
            }
            catch (Exception ex)
            {
                throw (new Exception(ex.Message)); //envia error
            }
        }
        public void bdCierra()
        {
            if (cnx.State == System.Data.ConnectionState.Open)
            {
                cnx.Close();
            }
        }

        // esta es int porque devuelve el numero de registros afeitados
        public int bdEjecuta(string ejecutaSql)
        {
            int iejecuta; //declaro una variable iejecuta de tipo entera 
            SqlCommand cmd; // declaro variable cmd de tipo sqlcommand
            try
            {
                cmd = new SqlCommand(ejecutaSql, cnx);
                iejecuta = cmd.ExecuteNonQuery(); // nonquery no regresa dataset
                return iejecuta;
            }
            catch (Exception ex)
            {
                throw (new Exception(ex.Message)); //envia error
            }

        }

        // este devuelve un datase
        public DataSet bdConsulta(string strquery, string strtabla)
        {
            SqlDataAdapter adp; //declara variable adp de tipo sqldataadapter, este adecua un set de instrucciones de sql
            DataSet ds = new DataSet(); //declara e inicializa variable ds de tipo dataset que es una coleccion de tablas
            try
            {
                adp = new SqlDataAdapter(strquery, cnx); //aqui recibe la instruccion y la cadena de conexion
                adp.Fill(ds, strtabla); //el fill llena el dataset con el nombre que se le quiere dar a la tabla

            }

            catch (Exception ex)
            {
                throw (new Exception(ex.Message)); //envia error
            }
            return ds;
        }
    }
}
